#include "../include/SymboleValue.h"
#include <stdlib.h>

SymboleValue::SymboleValue(Symbole s) : Symbole(s.getChaine())
{
    if(s == "<ENTIER>")
    {
        this->m_valeur = atoi(s.getChaine().c_str());    // c_str convertit une string en char*
        this->m_defini = true;
    }
    else
    {
        this->m_valeur = 0;
        this->m_defini = false;
    }
}

void SymboleValue::afficher(unsigned short indentation)
{
    Noeud::afficher(indentation);
    cout << "Feuille - Symbole value : " << getChaine() << endl; // on affiche la chaine du symbole
}

// Attention : cette fonction (operator) n'est pas membre de la classe SymboleValue
ostream & operator << (ostream & cout, SymboleValue symb)
{
    cout << (Symbole) symb << "\t\t - Valeur=";
    if(symb.m_defini)
    {
        cout << symb.m_valeur << " ";
    }
    else
    {
        cout << "indefinie ";
    }
    return cout;
}
